﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace portero_
{
    public partial class frmFoto : Form
    {
        public frmFoto()
        {
            InitializeComponent();
        }

        private void frmFoto_Load(object sender, EventArgs e)
        {
            Capturar(Varios.CamHandle);

        }
        public void Capturar(int Dispositivo)
        {

            try
            {

                //StopCaptura(); // Antes de nada "reseteo" el dispositivo  
                Varios.CamHandle = Varios.capCreateCaptureWindowA("XXXX" + Dispositivo.ToString(), 0, 0, 0, 0, 0, Pbx1.Handle.ToInt32(), Dispositivo); // Obtengo el Handle de la cam
                Varios.SendMessage(Varios.CamHandle, Varios.WM_CAP_CONNECT, 0, 0); // Enciendo la cam
                Varios.SendMessage(Varios.CamHandle, Varios.WM_CAP_SET_PREVIEWRATE, 30, 0); // Establezco los frames de captura /seg
                Varios.SendMessage(Varios.CamHandle, Varios.WM_CAP_SET_PREVIEW, 0, 0); // Empiezo a capturar
                reloj.Start(); // Inicio la captura  
                camEncendido = true;
                btnStopCapture.Text = "Tomar Foto";
            }

            catch (Exception e)
            {
                MessageBox.Show("No se puede Iniciar la WebCam", "Error: " + e.Message);
            }

        }
        /// <summary>
        /// Detiene la captura de imágenes y apaga la WebCam
        /// </summary>
        public void StopCaptura()
        {


            try
            {
                reloj.Stop();
                Varios.SendMessage(Varios.CamHandle, Varios.WM_CAP_DISCONNECT, 0, 0); // Apago la cam
                Varios.EmptyClipboard(); // Vacío el portapapeles
                camEncendido = false;
                Varios.CamHandle = 0;
                btnStopCapture.Text = "Enceder camara";
            }

            catch (Exception e)
            {
                MessageBox.Show("Error: " + e.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void btnCapturar_Click(object sender, EventArgs e)
        {
            Capturar(Varios.CamHandle);
        }

        private void reloj_Tick(object sender, EventArgs e)
        {
            Varios.SendMessage(Varios.CamHandle, Varios.WM_CAP_GET_FRAME, 0, 0); // Capturo la imagen
            Varios.SendMessage(Varios.CamHandle, Varios.WM_CAP_COPY, 0, 0); // La copio al portapeles
            Pbx1.Image = Clipboard.GetImage(); // La mando al Picturebox
            Varios.EmptyClipboard(); // Vacío el portapapeles
        }
        private Boolean camEncendido;
        private void btnStopCapture_Click_1(object sender, EventArgs e)
        {
            if (camEncendido)
            {
                StopCaptura();
                //tbNumDoc.Focus();
            }
            else
            {
                Capturar(Varios.CamHandle);
            }

        }

    }
}
